home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / gnu / dld-3_23.lha / dld-3.2.3 / ul_symbol.c < prev   
C/C++ Source or Header  |  1991-05-30  |  1KB  |  60 lines

  1. /* unlink_symbol.c -- unlink the object file defining the given symbol. */
  2.  
  3. /* This file is part of DLD, a dynamic link/unlink editor for C.
  4.    
  5.    Copyright (C) 1990 by W. Wilson Ho.
  6.  
  7.    The author can be reached electronically by how@cs.ucdavis.edu or
  8.    through physical mail at:
  9.  
  10.    W. Wilson Ho
  11.    Division of Computer Science
  12.    University of California at Davis
  13.    Davis, CA 95616
  14.  */
  15.  
  16. /* This program is free software; you can redistribute it and/or modify it
  17.    under the terms of the GNU General Public License as published by the
  18.    Free Software Foundation; either version 1, or (at your option) any
  19.    later version. */
  20.  
  21. #include "defs.h"
  22.  
  23.  
  24. dld_unlink_by_symbol (name, force)
  25. char *name;
  26. int force;
  27. {
  28.     register symbol *sp;
  29.     register char *p;
  30.  
  31.     if (name == 0) {
  32.     dld_errno = DLD_EUNDEFSYM;
  33.     return dld_errno;
  34.     }
  35.  
  36.     if (setjmp (_dld_env))
  37.     return dld_errno;
  38.  
  39.     /* prepend a '_' to name, as required by C's convention */
  40.     p = (char *) _dld_malloc (strlen(name) + 2);
  41.     *p = '_';
  42.     strcpy (p+1, name);
  43.  
  44.     sp = _dld_getsym_soft (p);
  45.     free (p);
  46.  
  47.     if (sp && sp->defined_by) {
  48.     if (sp->defined_by != _dld_dummy_entry)
  49.         _dld_unlink_entry (sp->defined_by, force);
  50.     else dld_remove_defined_symbol (name);
  51.     
  52.     return 0;
  53.     }
  54.  
  55.     dld_errno = DLD_EUNDEFSYM;
  56.     return dld_errno;
  57. } /* dld_unlink_by_symbol */
  58.  
  59.  
  60.